Methods for managing alignment and latency in interference suppression

ABSTRACT

An interference cancelling receiver combines data from multiple paths after aligning to transmitter timing, and uses either an equalizer or a Rake receiver to compute symbol estimates. Interference estimates are generated from the symbol estimates, and multiple interference estimates are combined after re-aligning the interference estimates to receiver timing. At least two segments of symbol estimates are computed for each segment of interference cancelled data. 
     Various techniques may be employed for controlling the latency and sequencing of these operations, and the subsystems within the canceller may use different processing clock speeds.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No. 11/858,074, entitled “Methods for managing alignment and latency in interference cancellation,” and filed Sep. 19, 2007, now U.S. Pat. No. 8,085,889; which (1) claims priority to U.S. Patent Application No. 60/845,594, entitled “Calculation of constant processing latency in a system with two locked clocks,” and filed on Sep. 19, 2006; (2) claims priority to U.S. Patent Application No. 60/845,595, entitled “Latency and Clock Frequency Reduction Using Data Reuse in Interference Cancellation for Coded Systems,” and filed Sep. 19, 2006; (3) claims priority to U.S. Patent Application No. 60/846,213, entitled “Real Time Implementation Techniques for Interference Cancellation,” and filed Sep. 21, 2006; and (4) is a continuation-in-part of U.S. patent application Ser. No. 11/103,138, entitled “Serial cancellation receiver design for a coded signal processing engine,” and filed on Apr. 11, 2005, now U.S. Pat. No. 7,359,465, which is a divisional of U.S. patent application Ser. No. 10/247,836, entitled “Serial cancellation receiver design for a coded signal processing engine,” and filed on Sep. 20, 2002, now U.S. Pat. No. 7,158,559, which claims priority to U.S. Patent Application No. 60/348,106, entitled “Serial Receiver Design for a Coded Signal Processing Engine,” and filed Jan. 14, 2002. The entirety of each of the foregoing patents, patent applications, and patent application publications is incorporated by reference herein.

This application also incorporates by reference in their entirety U.S. Patent Application No. 60/354,093, entitled “A Parallel CSPE Based Receiver for Communication Signal Processing,” and filed Feb. 5, 2002; U.S. Patent Application No. 60/333,143, entitled “Method and Apparatus to Compute the Geolocation of a Communication Device Using Orthogonal Projection Methods,” and filed Nov. 27, 2001; U.S. Patent Application No. 60/331,480, entitled “Construction of an Interference Matrix for a Coded Signal Processing Engine,” and filed Nov. 16, 2001; U.S. Patent Application No. 60/326,199, entitled “Interference Cancellation in a Signal,” and filed Oct. 2, 2001; U.S. Provisional Patent Application No. 60/325,215, entitled “An Apparatus for Implementing Projections in Signal Processing Applications,” and filed Sep. 28, 2001; U.S. patent application Ser. No. 09/988,218, entitled “Interference Cancellation In a Signal,” and filed Nov. 19, 2001, now U.S. Pat. No. 6,711,219; U.S. Patent Application No. 60/251,432, entitled “Architecture for Acquiring, Tracking and Demodulating Pseudorandom Coded Signals in the Presence of Interference,” and filed Dec. 4, 2000; U.S. patent application Ser. No. 09/988,219, entitled “A Method and Apparatus for Implementing Projections in Signal Processing Applications,” and filed Nov. 19, 2001, now U.S. Pat. No. 6,856,945; U.S. patent application Ser. No. 09/612,602, entitled “Rake receiver for spread spectrum signal demodulation,” and filed Jul. 7, 2000, now U.S. Pat. No. 6,430,216; and U.S. patent application Ser. No. 09/137,183, entitled “Printed circuit board socket,” and filed Aug. 20, 1998, now U.S. Pat. No. 5,928,035.

BACKGROUND

1. Field of the Invention

The invention generally relates to the field of signal processing. More specifically the invention is related to aligning input signals for symbol estimation and re-aligning interference estimates for the purposes of interference cancellation.

2. Discussion of the Related Art

In an exemplary wireless multiple-access system, a communication resource is divided into subchannels that are allocated to different users. A plurality of subchannel signals received by a wireless terminal (e.g., a subscriber unit or a base station) may correspond to different users and/or different subchannels allocated to a particular user.

If a single transmitter broadcasts different messages to different receivers, such as a base station in a wireless communication system broadcasting to a plurality of mobile terminals, the channel resource is subdivided in order to distinguish between messages intended for each mobile terminal. Thus, each mobile terminal, by knowing its allocated subchannel(s), may decode messages intended for it from the superposition of received signals. Similarly, a base station typically separates received signals into subchannels in order to differentiate between users.

In a multipath environment, received signals are superpositions of time-delayed and complex-scaled versions of the transmitted signals. Multipath can cause several types of interference. Intra-channel interference occurs when the multipath time-delays cause sub channels to leak into other subchannels. For example, in a forward link, subchannels that are orthogonal at the transmitter may not be orthogonal at the receiver. When multiple base stations (or sectors or cells) are active, there may also be inter-channel interference caused by unwanted signals received from other base stations. Each of these types of interference can degrade communications by causing a receiver to incorrectly decode received transmissions, thus increasing a receiver's error floor. Interference may also have other deleterious effects on communications. For example, interference may lower capacity in a communication system, decrease the region of coverage, and/or decrease maximum data rates. For these reasons, a reduction in interference can improve reception of selected signals while addressing the aforementioned limitations due to interference.

Systems and methods for mitigating this interference have been developed, some of which perform cancellation of the pilot channels, and some of which perform cancellation of all the control and user/traffic channels present.

SUMMARY OF THE INVENTION

In view of the foregoing background, embodiments of the present invention may provide a generalized interference-canceling receiver for canceling intra-channel and interchannel interference in transmissions that propagate through frequency-selective communication channels.

Receiver embodiments may use this invention to perform alignment functions for the purposes of interference estimation and interference cancellation.

In one embodiment of the invention, a symbol estimator operates on a signal stream that is either a received signal, an interference cancelled signal, or a combination of the two in order to generate symbol estimates that are then used to produce interference estimates, which are aligned to a received signal boundary in order to produce a composite interference estimate.

The symbol estimation may be performed based on data that is combined using a Rake based structure or an equalizer based structure.

In another embodiment, a received signal is used to generate symbol estimates and interference estimates, and at least two segments of interference estimates are processed in order to generate a single segment of an interference cancelled signal. The symbol estimation uses a fast Hadamard Transform.

In another embodiment of the invention, sample level data is downsampled to chip level data, and then operated on to create symbol level data, which is then modified to create modified symbol level data. The modified symbol level data is then re-spread and interpolated to create sample level data.

In another embodiment of the invention, different subsystems within the receiver operate at different processing clock speeds in order to balance latency and processing requirements.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a structure used to store Interference estimates.

FIG. 2 shows fingers aligned to the receiver timing.

FIG. 3 shows multipath fingers aligned to their symbol boundaries.

FIG. 4 shows the sample and chip points of interference estimates aligned to receiver timing before summation of the interference estimates.

FIG. 5 shows an interference cancellation system.

FIG. 6 shows a structure used to store cancelled data for the next iteration of interference cancellation.

FIG. 7 shows a synchronization system with port asynchronous FIFO.

FIG. 8 shows a synchronization system with port synchronous FIFO.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

The present invention will now be described more fully hereinafter with reference to the accompanying drawings, in which preferred embodiments of the invention are shown. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art.

Interference Cancellation systems comprise two major functions: estimating the interference and then removing the estimated interference. The interference experienced by a given signal path or ray is attributed to multi-paths from the same sector and paths from other sectors. The propagation time for the various multipaths from the transmitter to the receiver varies based on signal reflections from objects such as buildings, trees, etc. Different sectors might not be synchronized to each other, either because of different propagation times from the respective sectors, or because the sectors are deployed asynchronously, as is possible in some systems such as WCDMA and HSPDA. In effect, the signal paths arriving at the receiver can often be misaligned to each other's timing.

Interference estimation may be performed separately on each path, or once per sector. Interference Estimation consists of multiple steps, the sum of which in effect, is trying to reconstruct a replica of the transmitted signal(s). Interference estimation is preceded by the process of symbol estimation, which is the process of computing symbol estimates of the received user symbols. Interference estimation steps may include thresholding or weighing the symbol estimates, performing hard, soft or mixed decisions on the symbol estimates, and performing the functions present at the transmitter in order to reconstruct a replica of the signal as it would have been received. The interference estimates are then removed using projection or subtraction methods.

If interference estimation and removal is performed on a per path basis, alignment may be performed simply by adjusting the removal boundary to be the symbol boundary of the path being removed. Interference estimation and removal where multiple paths from a sector are involved, and where multiple asynchronous sectors are involved presents a more complicated situation of alignment. In such techniques, multiple paths from a single sector are combined either using some form of Rake combining such as Maximal Ratio Combining (MRC) or equalization. The equalization may be performed using an LMMSE equalizer or a Decision feedback Equalizer (DFE). The input per sector to an interference estimator is aligned to the sector's transmitter timing indicated by its symbol boundaries.

A symbol boundary marks the chip location in a received signal or a despread chip sequence from which point chips may be collected for a decovering (or de-Walshing) operation to be performed and yield valid symbol estimates. Symbol boundaries are well known in the art, and are the boundary locations in a transmitted or received chip sequence, which marks the beginning and end of the transmission of a symbol. In some systems, such as CDMA2000 and HSPDA, multiple symbol lengths are supported, in which case the symbol boundary refers to the boundary of any of the supported symbols.

The symbol boundary is related to the longest valid number of chips in a symbol, although, in certain types of interference cancellation, estimates may be made using lengths that are longer or shorter than a given symbol length.

For example, an interference canceller in a CDMA2000 system may perform symbol estimation on either 64 chips or 128 chips at a time. A WCDMA/HSDPA interference canceller may perform symbol estimation on 128, 256 or 512 chips.

In one preferred embodiment, all processing is performed at a single processing length, which determines the symbol boundary in use for the embodiment.

The starting point for symbol estimation is a received signal, which may either be a signal received over the air using a front-end, and then down-converted to baseband at a sampling rate that is usually higher than the chipping rate, or a signal that is the resultant product of an earlier stage of interference removal in an iterative or multi-stage implementation.

A searcher typically operates on a received signal to identify sectors and paths that are present in the received signal.

Multiple paths from a sector may be combined to form a single data stream input to the symbol estimator. The combination of multiple paths may be performed either using some form of Maximal Ratio Combining (MRC) or using equalization. In Rake based combining or MRC, all the paths of a sector are aligned to their transmitter timing (symbol boundaries) before being combined with each other, in proportion to their signal strength or SNR. This step also may include an optional phase rotation step, which typically uses the pilot channel in conjunction with the received signal stream. A despreading operation may also be performed. As an alternative to MRC combining, equalization may be performed on the received signal, which has the effect of creating a single stream of data, but with the effective mitigation of channel effects. A decision feedback equalizer structure may be employed for symbol estimation, where inter-symbol interference is mitigated as well.

After this combination which results in a single stream of data per sector, symbol estimation is performed using a symbol estimator which typically uses a fast Hadamard transform (also known as a fast Walsh transform).

The symbol estimator, which is coupled to the interference estimator, uses symbol boundary aligned data to estimate the symbol estimates on a per sector basis. After the symbol estimation, post-processing may be performed which include steps such as weighing or thresholding. Thresholding may be used to exclude symbol estimates of individual channels whose received strengths are weaker than a certain strength threshold, which may be a predetermined multiple of the derived noise floor. The noise floor may be derived from a combination of pilot and traffic channels, or just the pilot channel characteristics alone (e.g. it's level of AC energy). A weighing step generates weights for each symbol estimate based on a figure of merit of the symbol estimate such as signal strength or SNR and multiplies the symbol estimates by the weights.

The modified symbol estimates per sector are then used to create multiple interference estimates, each of which represent the interference from a given path of a given sector. Typical operations for this interference estimation include a covering operation, which may be applied to the sector as a whole, putting the spreading code back, and multiplying by a channel estimate on a per path basis, and using a combination of the transmit and receive filters in order to accurately reconstruct the interference from the given path.

The interference estimates are then interpolated to sample rate, in cases where the sampling rate is higher than the chipping rate in order to provide interference estimates at all samples, even those that do not correspond to a given chip location in a particular finger or ray.

The interference estimates are then re-aligned to the original receiver timing rather than to a symbol boundary and then combined in order to be used to produce an interference cancelled signal.

Since the arrival times of the different multipaths from the different sectors differ, particular care needs to be taken to ensure that alignment is maintained at various points in the receiver chain. In addition, the rates at which intermediate signals change must be managed.

In a preferred embodiment, a received analog signal is down converted to digital data at a rate faster than the chipping rate specified in the standard. For each multipath identified and tracked, a downsampler downconverts the data corresponding to that ray to its chipping rate, by only extracting the on-time sample. The on-time samples from multiple fingers of a particular source are then combined in order to extract symbol estimates using a Fast Hadamard transform module. Symbol estimates are generated at what is known as a symbol rate, and is related to the processing length chosen for the particular implementation. In an exemplary embodiment, the processing length is 128 chips. Symbol level data at the symbol rate is then modified using a post-processor which performs either thresholding or weighing. This modified symbol level data is then used to construct interference estimates by performing the operations performed at the transmitter such as covering and spreading, using an inverse fast Hadamard transform module (which is equivalent to a fast Hadamard transform module with some intermediate scaling steps), and a spreader. Performing covering or spreading on the symbol level data leads to chip level data, which may then be interpolated back to a sample rate.

The efficiency of implementing the interference cancellation algorithm(s) at any given time depends on the specific “environment” presented by all the input rays, the timing of which is recovered in the fingers. The environment of input fingers can be characterized by the number of different base stations (sectors) identified, fingers detected per sector (multipaths), the strength distribution of all fingers, and the relative temporal positions of the symbol boundaries for all of the fingers. When a radio (terminal) is in motion, these characteristic details change rapidly. If the input fingers happen to be time multiplexed in the radio, the time multiplexing may be removed as a first step to restore the original relative time positions of the fingers.

Embodiments of the invention include several techniques that may be used to implement the algorithm(s) while achieving a high performance/cost ratio.

-   -   1) One technique which offers operational efficiencies is to         employ a common processing symbol boundary reference to be used         for all fingers during the interference removal phase (not the         estimation phase) based on a sorting of the offsets of the         arrival times of the input fingers. One embodiment uses the         boundary of the input finger identified by the sorting logic for         the common processing boundary. Another embodiment creates a         “virtual reference finger” that would initially be synchronized         to the symbol boundaries of the input finger identified by the         sorting logic, but when that input finger is deeply fading (even         to the point of losing the time tracking of its symbol         boundaries), the virtual reference finger boundaries would         remain “locked” to the timing of where the original input finger         was until the virtual reference finger no longer satisfied the         sorting rules to be the reference. Virtual reference fingers are         described in Patent Application, “Virtual Reference Timing for         Multi-Time Based Systems,” filed on Sep. 15, 2006, which is         hereby incorporated by reference. When the virtual reference         finger no longer satisfies the sorting rules it is         resynchronized to the new input finger selected by the sorting         logic.

An exemplary embodiment for the sorting logic is as follows:

-   -   A) Sort all fingers into groups where each group is the set of         received multi-paths from a single base station (cell). This is         done by comparing the PN sequences of all fingers at various         time offsets relative to each other until all possible matches         within the allowed “multi-path time window” are found. This         window is the maximum allowed difference in arrival time between         the first finger and last finger of a multi-path group. A         typical multi-path time window may be ¼ of a symbol time since         any multipaths which have arrival times more than ¼ of a symbol         later than the first arriving finger of a sector may be too weak         to be utilized efficiently in interference estimation. An         enhancement may be used to improve performance in noisy         environments where a finger may be included in a group even         though its PN sequence doesn't exactly match that of the group         for short periods of time. The mismatch rate allowed is a design         parameter that trades off noise sensitivity with detection time         and false detection rate.     -   B) Within each group (sector), find the first arriving finger         (as defined by their symbol boundaries).     -   C) Measure the arrival time offsets between all the first         arriving fingers of each group.     -   D) Find the pair of first arriving fingers that has the largest         time offset, and select the finger of this pair that arrived         last as the “reference finger.” Hysteresis may be used to         minimize sorting changes due to time variations of the fingers.         This reference finger is the first arriving finger of the first         arriving base station.

To put these techniques in context, an example of a system level embodiment utilizing these techniques follows:

-   -   1. Find a reference finger using the steps of the sorting logic         outlined previously.     -   2. Within each group (sector), find the first or earliest         arriving finger (as defined by their symbol boundaries). Create         a sorted list starting with the reference finger and ending with         the latest arriving fingers amongst the earliest arriving finger         from each sector. This is the “first arriving finger” list.     -   3. Within each group (sector), find the last arriving finger (as         defined by the symbol boundaries), and sort these fingers in         order of arrival time after the reference finger's SBS (signal         boundary strobe). This is the “last arriving finger” list.     -   4. Store the samples of all input fingers of sufficient strength         in rolling 3 symbol memories (Input Finger Memory).     -   5. Wait for the SBS of the first element of the sorted “last         arriving finger” list.     -   6. Read a whole symbol of 1× (on chip) samples of each finger         (each multipath) of the first sector (as identified by the         sorted “last arriving finger” list) from the Input Finger         Memory. Note that these multipaths now have their symbol         boundaries aligned to transmitter time (may not be aligned to         receiver timing). Perform symbol and interference estimation on         it.     -   7. Store the interference estimates for the current sector into         a rolling three-symbol memory (Estimation Memory).     -   8. The Estimation Memory stores data such that address zero         corresponds to the first interference estimate chip of the         sector with the reference finger. Storage address (or write         address) for other sectors is set by the offset between the         reference finger and the first arriving finger of the sector         being stored.

In another embodiment the use of the timing boundary of the reference finger can be replaced by an arbitrary reference timing signal (herein referred to as the arbitrary time reference, TR), which represents an arbitrary, but fixed reference time. FIG. 1 shows a storage structure that helps align the interference estimates to an arbitrary reference in time during data arrival at the receiver. RAMs (Random Access memories) can be used as the storage structures. Alternative embodiments for storage structures could be built using delay lines. The arbitrary time reference (TR) can be made to correspond to address zero in the RAM block. For every finger included in the estimation process, the offset between the TR and the finger's nearest symbol boundary after the reference is calculated. The offset can be calculated in chips or in samples (if oversampled data exists). For fingers whose offset in chips is not an exact integer multiple away from the reference time, the closest integer multiple is used. The interference estimates for sector 1 is stored in the RAM 100 such that the chip corresponding to the symbol boundary of the first arriving finger of the sector is stored in a location exactly M address locations away, where M chips is the offset in chips between the reference time and the symbol boundary of the first arriving finger. Similarly, sectors 2 and 3 are stored at the Nth and pth location, corresponding to their first arriving finger's offsets' (N and P chips) from the reference time. The above method of storing data aligns the sectors' interference estimates with respect to the TR. Every location of the RAM now stores reference time aligned interference estimates for the sectors used in the interference summation. The embodiment assumes a scenario where all three sectors have one finger each. If a sector has more than 1 finger used in the interference estimation process, all its fingers interference estimates can be generated using the sector interference estimates. The RAM may store multiple symbols of data per sector and multiple such RAMs may be used.

One embodiment of removing the estimated interference using an interference removal module sums the estimates of interfering signals and subtracts (or projects) it either from the original received signal at the receiver or an interference removed signal that may be the product of a previous iteration or stage of interference cancellation. The input to the summer of the interference estimates spans multiple sectors and their multipaths. The inputs at the summer should be aligned with respect to their arrival time at the receiver, which may cause misalignment of their symbol boundaries with respect to each other.

FIG. 2 shows 3 paths aligned to their arrival time at the receiver. Their symbol boundaries, an indicator of their transmitter timing are shown as vertical lines. Finger 1 (path 1) and finger 2 are multi-paths of each other, while finger 3 is a path from another sector. FIG. 3 shows the alignment of fingers 1 and 2 when they are combined with each other for interference estimation. Finger 1 data is delayed to match the symbol boundaries of finger 2 before combining the two fingers and providing the composite to the symbol estimator's input.

The input to the estimator is at chip rate and may have been decimated from a data set with a higher sample rate than the chip rate, e.g. four times the chip rate (4×), referred to as the sampling rate. The interference estimates at the point at which they are summed together have to be aligned to their arrival timing at the receiver. But, the chips corresponding to the interference estimate of a path may not be aligned to the interference estimate chips from other paths. FIG. 4 shows an example of a 4× system with two fingers with different chip alignments as well as the 4× sample points. Interference estimates are present only at samples points W₁, A₁, etc. for finger 1 and X₂, B₂, etc. for finger 2. For correct summation of the interference estimates, the estimates at the intermediate sample points are required. For e.g. to obtain a summed interference data sample for time point A, samples A₁ and A₂ are required. While A₁ may be available from the estimator since it corresponds to finger 1's chip markers, the closest data samples to A₂ that are available are X₂ and B₂ corresponding to finger 2's chip markers. An interpolator solves the problem where A₂ can be obtained by performing an interpolation using multiple interference estimate samples that are available at finger 2's chip markers.

FIG. 2 shows the alignment of the interference estimates of the fingers when being summed together. This does not necessarily align the symbol boundaries of all the fingers that were estimated. Instead the alignment is based on the arrival timing of each path at the receiver. The summed interference is then removed from the corresponding uncanceled data stream that is a composite of all the signals as received at the receiver. The un-canceled data was stored before the interference estimation process to be used in the interference removal stage. The summation contains interference estimates for all fingers that were estimated except the finger that is being improved.

One embodiment of the interference removal module is where estimated interference is summed for all fingers. The sum is then subtracted from the un-canceled data stream, while adding back the individual interference estimates obtaining interference removed versions for individual fingers as shown in FIG. 5. For e.g. the interference removed version for finger 1 and finger 3 are shown in equations 1 and 2, where Y is the uncanceled data stream, S₁ and S₃ are interference estimates for fingers 1 and 3, Y₁′ and Y₃′ are interference removed versions of fingers 1 and 3 and μ is a weighting factor that may offer stabilization for the interference removal process. The summation of S over all fingers estimated is indicated by ΣS_(i) performed by summer 514. The subtraction of the summation of interference estimates of all fingers from Y is performed by 516 a to 516 n. The result can be multiplied (using multipliers 518 a-518 n) by μ which can be held constant over all fingers. The estimated interference term added back (using summers 520 a-520 n) decides the finger that has interference removed from it. Y′ ₁=μ(Y−ΣS _(i))+S ₁  (1) Y′ ₃=μ(Y−ΣS _(i))+S ₃  (2)

An alternative embodiment for removing interference does not use the weighting factor μ as shown in equation 3 for finger 1. In this embodiment, the cancellation is implemented as Y′ ₁ =Y−ΣS _(i) +S ₁  (3)

Another iteration of interference estimation and removal can be repeated using interference canceled data from a previous pass. Interference estimation and removal can be iterated multiple times based on the performance, latency, clock frequency and area trade-offs available. Iteration could provide improved interference estimates over the previously calculated estimates, thus removing more of the interference in the system. Multiple such iterations of interference estimation and removal can be performed using the previous iteration's canceled output as an input to the next iteration's estimation process. This would require realignment of the canceled data, since it is the input for the next iteration's estimation process and will have to be realigned to symbol boundaries. FIG. 2 shows the data alignment when data enters the interference removal stage while FIG. 3 shows data alignment at the input of the symbol estimation stage coupled with interference estimation. In a system with multiple iterations, each stage follows the other and requires the data aligned accordingly.

FIG. 6 shows a storage structure consisting of a RAM 600 used to align the canceled data back to symbol boundaries. All the fingers' canceled data is made available with their symbol boundary indicators. The chip enable indicators may be available if the cancellation output is at the sample rate. Only samples corresponding to chip enable indicators are stored since the estimation process only uses chip-rate (1× chip) data as input. The data is stored such that anytime a symbol boundary indicator is encountered for a finger, the write address for the finger in the RAM 600 is reset to 0, and the chip corresponding to the symbol boundary is stored in address 0. Every finger will have its data aligned to its symbol boundary corresponding to the location with address 0. Reading data from address 0 for all fingers within a sector will provide symbol boundary aligned data which can be combined and sent to the interference estimator. The RAM 600 may store multiple symbol worth of data per finger and multiple RAMs may be used.

FIG. 2 shows finger 1, illustrated as reference numeral 210 and having segments or symbols 212, 214, 216, 218; finger 2, illustrated as reference numeral 220 and having symbols 222, 224, 226, 228; and finger 3, illustrated as reference numeral 230 and having symbols 232, 234, 236, 238 where time increases in the direction of increasing symbol reference number. A finger's symbol boundary is not aligned to all other finger's symbol boundaries as illustrated in the figure. In order to remove the estimated interference of finger 1 from symbol 222 of finger 2 it is necessary to have processed segments 212 and 214. Similarly, to process segment 224 with the interference of finger 1 (210) removed it is necessary to have processed segments 214 and 216. The interference removal stage requires data to be aligned to the receiver timing. The process of realigning symbol boundary aligned data to receive timing alignment requires two symbols worth of interference estimation. Thus for every symbol interference removed, interference is required to be estimated for two symbols. The estimation and removal may be done in multiple symbol segments as well.

As the number of iterations increase the latency may increase prohibitively. To keep the latency in check, some performance can be traded by re-using a previous iteration's interference estimates in the interference removal stage. For e.g. to remove interference from symbol 224 of finger 2 in the 3rd iteration, we need the 3rd iteration interference estimates of symbols 214 and 216 from finger 1 and symbols 232 and 234 from finger 3. It is possible that the 3rd iteration interference estimates are available only for symbols 214, 232 and 234. In this case the system could wait for future interference estimation to provide the 3rd iteration interference estimates for symbol 216 or use the 2nd iteration estimates for symbol 216, based on its latency requirements. The same re-use technique can be used for interference removed data from the previous iteration when it is being aligned to symbol boundaries providing input to the interference estimation process of the next iteration. In general, if data required for symbol estimation or interference removal is not completely available for a given iteration, the unavailable data can be substituted with data from a previous iteration.

Symbol and interference estimation requires at least a complete symbol of data to calculate estimates. During the first pass the estimation block waits to receive at least a complete symbol at the receiver. For iterations past the first pass, the estimation block awaits interference removal of at least a complete symbol before estimation can begin. Meanwhile, the interference removal process can work on individual samples without requiring interference estimates for the complete symbol, though it does need interference estimates for all fingers whose estimates are being summed at a given point in time. The output of the interference estimation block may occur in bursts. The estimation burst size can be fixed for a given system. The interference removal block's output can also occur in bursts, where the burst size can be fixed or variable. The aim is to send out a continuous stream of interference canceled data at a constant rate to the rake receiver as it would expect to get without an interference cancellation system, thus minimizing the changes required outside the interference cancellation system. A storage system like a FIFO can be used at the output of the interference canceller which can help maintain the continuous data stream to the rake receiver, even if the input to the FIFO is in bursts. The FIFO status information (full, empty, etc.) can be used to control the burst rate and size of the stored estimates into the interference removal block to generate interference canceled data.

One efficient segmentation (burst) size may be one fourth of a symbol because that is the allowed multipath distribution time window mentioned above. In this embodiment the number of such bursts will be four which will equal a symbol worth of interference estimates.

Another embodiment of the interference removal system can have a variable number of segments (bursts) and uses the arbitrary timing reference (TR). The RAM 100 with the interference estimates stores the chips corresponding to the arbitrary timing reference (TR) in the location with address zero. The timing reference is repeated as a pulse periodically with the repetition period equal to the total latency of the system from data input to the interference removed output. The output of the interference cancellation system is the input to the Rake receiver.

The un-canceled data is stored prior to the interference estimation. The timing control block (TCB) that generates the TR also starts a timer, based on the TR, which counts up to the latency of the system and then rolls over. When the timer reaches a preset value, defined by the interference removal block latency plus the output FIFO worst case delay, a request is sent to the block with the RAM 100 storing interference estimates. The RAM 100 may read the interference estimates corresponding to the TR (address zero as shown in FIG. 1) based on the request pulse from the TCB.

The un-canceled data is stored until ready to be used in the interference removal stage. When the location corresponding to address zero is read from the RAM 100 storing interference estimates, a TR indicator is generated and tagged to the data read.

The interference removed data is sent out to the Rake receiver (or equalizer) in the final iteration of interference cancellation and is stored in a FIFO as mentioned above. The writing to the FIFO occurs as the cancelled data is made available to it. The cancelled data at the input to the FIFO is accompanied by the TR marker, while the address to which the data corresponding to the marker is written is noted. The TCB uses its internal timer to send out a request signal to the FIFO to read out the samples corresponding to the TR marker, such that the total latency of the system remains constant. The TCB thus helps maintain the total latency of the interference cancellation system constant. The output FIFO uses one or more of its AlmostEmpty and/or AlmostFull flags to decide the burst size and rate of the interference estimates out of the RAM 100. This method also minimizes the depth (and therefore the cost) of the output FIFO.

Any iteration of interference cancellation that is not the final iteration uses a slightly different method to burst interference estimates out of the RAM 100. The interference estimates are read when the estimates corresponding to all sectors for a given address location are available. The read address is incremented sequentially. The read requests of estimates for multiple iterations are sent to an arbiter that gives the later iterations a higher priority than the ones before it. The control of the RAM is relinquished after reading one chip worth of data for all sectors.

The interference cancellation process of symbol and interference estimation and interference removal may require a higher clock than used in the Rake receiver. It is commonplace for systems to consist of two or more subsystems, each governed by its own independent clock, unlocked in phase or frequency with the other subsystem. In addition, a processing subsystem may require a variable amount of time in order to process data. An embodiment as presented provides for synchronizing inputs and outputs of these two unsynchronized subsystems without a priori knowledge of the processing time. The embodiment enables synchronization without a requirement to share clock signals or timing information from either subsystem across subsystem boundaries. All timing calculations that are required for synchronization are computed within one of the subsystems.

A synchronization system is illustrated in FIG. 7, wherein a clock signal from a sampling clock domain is shared across the timing boundary with a processing clock domain. A general data-processing system comprises a data-sampling clock and a data-processing clock. The data-sampling clock produces new data every clock period. In a simple system, the two clocks are typically phase and frequency locked. A data processing block operates on the data presented by the data-sampling clock and computes new results within a predetermined set time. A general requirement of the system is that a constant stream of correlated data be presented to downstream data consumers. This requires that the effective processing time be constant. If the data computation exceeds a desired maximum processing time, or if the data computation time is variable, a more complex system is required.

An advanced system includes a processing block with an input and output FIFO. The data-processing clock mayor may not be frequency/phased locked to the data-sampling clock, although, in general, it will be a higher clock rate that is not phase locked. Both the input and output FIFOs are port asynchronous. This indicates that the respective read and write port clocks are neither frequency nor phase locked. Data enters the processing block via the input FIFO. The depth of the input FIFO is small since the processing clock is greater than or equal to the sampling clock. The data is then stored in a port synchronous buffer for use by the processing block.

FIG. 8 illustrates an embodiment in which the port asynchronous output FIFO of FIG. 7 is replaced by a port synchronous FIFO and a retiming circuit. The FIFO provides delay control for the processing data path and the retiming circuit provides the clock domain interface between the sampling clock and the processing clock domains. A port synchronous FIFO is used so that the read address does not have to be retimed across clock domains and therefore introduce uncertainty in the write address calculation. The processing clock to sampling clock ratio is limited to a minimum of 3. The write side operates strictly in the processing clock domain, but the read side must retime the data to the sampling clock.

At time 0, an output word from the sampling system is written into the input retiming circuit, whose fixed delay is known to be T_(sp). At time T_(sp), this word is written into the port synchronous processing buffer at input time T_(w) ^(i)=T_(sp), which is time-stamped to the corresponding sampling time. The word is held for delay Δ^(i) in the processing buffer, awaiting availability of the processor P, whose processing time Δ^(P) is variable, but bounded. After the variable delay of Δ^(i)+Δ^(P), the processed word is written into the port synchronous output FIFO at write time T_(w) ^(o) and stored for delay Δ^(o). The output FIFO write pointer that affects the storage delay Δ^(o) is to be computed according to this invention. After the output FIFO, the word is processed through the output retiming circuit, which has a delay of T_(ps).

In one embodiment, a fixed delay of 512 (an arbitrary number, in units of samples or chips, selected to illustrate the idea, without loss of generality) is desired between the sample 0 into the input re-timing circuit and sample 512 out of the re-timing FIFO. From FIG. 8, the requirement to synchronize the processed word with the sampling system is expressed by a first equation, 512=T _(sp)+Δ^(i)+Δ^(p)+Δ^(o) +T _(ps)

wherein 512 is the target delay in samples, T_(sp) and T_(ps) are known delays, in samples, and the remaining delays are unknown. The delay Δ^(i) may be determined from the difference between the read and write times into the input port synchronous processing buffer, namely Δ^(i) =T _(R) ^(i) +T _(w) ^(i)

In one embodiment of the invention, the time T_(w) ^(i) is time-stamped to the sampling system and this time (or address) is given to the time T_(R) ^(o) (0) on the read channel of the port synchronous output FIFO. With Δ^(i) determined from timing addresses within the processing system, one of which is explicitly time-stamped and the other of which is synchronously locked to this address, the first equation may be re-written as 512−T _(sp)−Δ^(i) −T _(ps)=Δ^(p)+Δ^(o)

An assumption may be made that processor P consumes data in bursts with predefined idle times between the bursts. This property is used to calculate the output FIFO write address without knowledge of the processing delay Δ^(P). When the beginning of the burst is read from the processing buffer, the output FIFO write address can be calculated as follows: Δ^(o)′=512−T _(sp) −T _(ps)−Δ^(i) w ^(o) =R ^(o)+Δ^(o)

This write-address value is used to store the first word of data that exits the processor P. Note that during processing time Δ^(P) of the first word, the output FIFO read pointer increments by a time amount equivalent to Δ^(P). This implicitly calculates the processing time Δ^(P), i.e. Δ^(o)′=Δ^(o)+Δ^(p)

Note that an additional assumption is made that the maximum processing time Δ^(P) does not exceed the minimum output buffer time Δ^(o). Since the processing clock frequency is assumed to be greater than the sampling clock frequency, the rest of the data burst from the processor P will be stored in the output FIFO ahead of the corresponding read access of the data.

The A/D converter at the front end of the receiver samples data at a rate higher than the chipping rate. The higher sampling rate is denoted as Nx, while the chip rate is denoted as 1×. The sample rate (Nx) is converted to the chip rate (1×) before the interference estimation process which uses 1× data. The Nx data is accompanied with chip enable indicators at the chips of a finger. The chip enable indicators can be used to pick 1× data from an Nx stream of data. The 1× data stream is then aligned to its symbol boundaries before the symbol and interference estimation process. The interference estimates stay at the 1× rate till the input of the interpolator. The interpolator creates Nx data samples from the 1× data samples, creating an Nx data stream for all fingers. Using RAM 100, the 1× input data to the interpolator was aligned to the closest chip point. Any left over sample level alignment is performed using delay lines on the Nx data stream at the output of the interpolator. The interference removal can be performed at the sample level (Nx) data rate. The interference removed data can then be stripped back to 1× data rate using stored chip enable indicators corresponding to the un-canceled data. Alternatively, the chip enable indicators can be regenerated using the symbol boundary information per finger. The interference removed 1× rate data can be sent out to the rake receiver or used in another iteration of interference cancellation.

It should be clear that this invention described herein may be realized in hardware or software, and there are several modifications that can be made to the order of operations and structural flow of the processing.

Those skilled in the art will recognize that this invention may be realized in a chipset or a handset that is implemented for downlink processing, as well as a chipset or a basestation implemented for uplink processing.

Those skilled in the art should recognize that method and apparatus embodiments described herein may be implemented in a variety of ways, including implementations in hardware, software, firmware, or various combinations thereof. Examples of such hardware may include Application Specific Integrated Circuits (ASICs), Field Programmable Gate Arrays (FPGAs), general-purpose processors, Digital Signal Processors (DSPs), and/or other circuitry. Software and/or firmware implementations of the invention may be implemented via any combination of programming languages, including Java, C, C++, Matlab™, Verilog, VHDL, and/or processor specific machine and assembly languages.

Computer programs (i.e., software and/or firmware) implementing the method of this invention may be distributed to users on a distribution medium such as a SIM card, a USB memory interface, or other computer-readable memory adapted for interfacing with a consumer wireless terminal. Similarly, computer programs may be distributed to users via wired or wireless network interfaces. From there, they will often be copied to a hard disk or a similar intermediate storage medium. When the programs are to be run, they may be loaded either from their distribution medium or their intermediate storage medium into the execution memory of a wireless terminal, configuring an onboard digital computer system (e.g., a microprocessor) to act in accordance with the method of this invention. All these operations are well known to those skilled in the art of computer systems.

The functions of the various elements shown in the drawings, including functional blocks labeled as “modules” may be provided through the use of dedicated hardware, as well as hardware capable of executing software in association with appropriate software. When provided by a processor, the functions may be performed by a single dedicated processor, by a shared processor, or by a plurality of individual processors, some of which may be shared. Moreover, explicit use of the term “processor” or “modulecircuit” should not be construed to refer exclusively to hardware capable of executing software, and may implicitly include, without limitation, digital signal processor DSP hardware, read-only memory (ROM) for storing software, random access memory (RAM), and non-volatile storage. Other hardware, conventional and/or custom, may also be included. Similarly, the function of any component or device described herein may be carried out through the operation of program logic, through dedicated logic, through the interaction of program control and dedicated logic, or even manually, the particular technique being selectable by the implementer as more specifically understood from the context.

The method and system embodiments described herein merely illustrate particular embodiments of the invention. It should be appreciated that those skilled in the art will be able to devise various arrangements, which, although not explicitly described or shown herein, embody the principles of the invention and are included within its spirit and scope.

Furthermore, all examples and conditional language recited herein are intended to be only for pedagogical purposes to aid the reader in understanding the principles of the invention. This disclosure and its associated references are to be construed as applying without limitation to such specifically recited examples and conditions. Moreover, all statements herein reciting principles, aspects, and embodiments of the invention, as well as specific examples thereof, are intended to encompass both structural and functional equivalents thereof. Additionally, it IS intended that such equivalents include both currently known equivalents as well as equivalents developed in the future, i.e., any elements developed that perform the same function, regardless of structure. 

We claim:
 1. An interference cancelling receiver, comprising: at least one symbol estimator configured to operate on a signal stream to produce one or more symbol estimates from the signal stream; one or more interference estimators coupled to the at least one symbol estimator to produce one or more of interference estimates; one or more storage structures configured to store the one or more interference estimates at one or more locations in the one or more storage structures that are offset from a reference address by a number of addresses representative of a temporal offset between a time reference associated with the reference address and the corresponding interference estimate; and an interference estimate combiner configured to combine one or more interference estimates aligned to the time reference to produce a composite interference estimate.
 2. The interference cancelling receiver in claim 1, wherein the at least one symbol estimator is configured to operate on Rake combined data.
 3. The interference cancelling receiver in claim 1, wherein the at least one symbol estimator is configured to operate on Equalizer combined data.
 4. The interference cancelling receiver in claim 1, wherein the signal stream comprises data selected from one of an original received signal, an interference cancelled signal, and a combination of an original received signal and an interference cancelled signal.
 5. The interference cancelling receiver in claim 1, further comprising a front-end configured to sample a received signal at a rate higher than a chipping rate and accompany sampled data at chips with chip enable indicators.
 6. The interference cancelling receiver in claim 1, further comprising: a sampling clock domain comprising a data sampling clock; a processing clock domain comprising a processing clock having a greater frequency than the data sampling clock and not frequency or phase locked with the data sampling clock; and an input first-in-first-out (FIFO) buffer and an output FIFO that interconnect the sampling clock domain with the processing clock domain, wherein both the input FIFO and the output FIFO are port asynchronous.
 7. The interference cancelling receiver in claim 1, further comprising: a sampling clock domain comprising a data sampling clock; a processing clock domain comprising a processing clock having a greater frequency than the data sampling clock and not frequency or phase locked with the data sampling clock; and an input first-in-first-out (FIFO) buffer and an output FIFO that interconnect the sampling clock domain with the processing clock domain, wherein both the input FIFO and the output FIFO are port synchronous and include a retiming circuit configured to address frequency and phase differences between the data sampling clock and the processing clock.
 8. A method for performing interference cancellation comprising: computing symbol estimates from a combined data stream; processing the symbol estimates to produce modified symbol estimates; using said modified symbol estimates to create a plurality of interference estimates; aligning at least one of the plurality of interference estimates with respect to a time reference by storing the plurality of interface estimates at a plurality of locations in one or more storage structures that are offset from a reference address by a number of addresses representative of a temporal offset between the time reference and the corresponding interference estimate; combining the plurality of interference estimates aligned to the time reference to create a combined interference estimate; and using the combined interference estimate to create at least one interference cancelled signal stream.
 9. The method recited in claim 8, wherein said aligning comprises aligning chip-level data from a plurality of paths from a single source to a symbol boundary of each of said plurality of paths to produce a plurality of aligned paths.
 10. The method recited in claim 8, wherein said combining comprises summing the plurality of interference estimates.
 11. The method recited in claim 8, wherein the combined data stream comprises interference cancelled data.
 12. The method recited in claim 8, wherein the combined data stream comprises a combination of interference cancelled data and raw signal.
 13. The method recited in claim 8, further comprising: sampling a received signal at a rate higher than a chipping rate; and accompanying the sampled data at chips with chip enable indicators.
 14. The method recited in claim 8, further comprising: operating a sampling clock domain based on a data sampling clock; operating a processing clock domain based on a processing clock having a greater frequency than the data sampling clock and not frequency or phase locked with the data sampling clock; and interconnecting the sampling clock domain and the processing clock domain with an input first-in-first-out (FIFO) buffer and an output FIFO that both are port asynchronous.
 15. The method recited in claim 8, further comprising: operating a sampling clock domain based on a data sampling clock; operating a processing clock domain based on a processing clock having a greater frequency than the data sampling clock domain and not frequency or phase locked with the data sampling clock; and interconnecting the sampling clock domain and the processing clock domain with an input first-in-first-out (FIFO) buffer and an output FIFO that are both port synchronous and that both include a retiming circuit configured to address frequency and phase differences between the data sampling clock and the processing clock. 